#ifndef XM_EVLOOP_HH
#define XM_EVLOOP_HH

#include <functional>
#include <vector>
#include <atomic>
#include <memory>
#include <mutex>

#include "XM_noncopyable.hh"
#include "XM_Timestamp.hh"
#include "XM_CurThread.hh"

XM_NAMESPACE_BEGIN

struct Channel;
struct Poller;

struct EvLoop : private XM_noncopyable
{
    using Functor = std::function<void()>;

    EvLoop();
    ~EvLoop();

    void runLoop();
    void quit();

    XM_Timestamp pollReturnTime() const
    {
        return pollReturnTime__;
    }

private:


};

XM_NAMESPACE_END

#endif // header file protect